package com.integral.biz.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.alibaba.druid.util.StringUtils;
import com.integral.biz.IBankTypeBiz;
import com.integral.entity.Bank;
import com.integral.entity.BankType;
import com.integral.service.BankService;
import com.integral.service.BankTypeService;
import com.integral.vo.BankTypeVo;

/**
 * @Description: 银行产品信息表BIZ实现类
 * @author zhaofan
 * @date 2018年05月08日 上午01:20:27
 */
@Service("bankTypeBiz")
public class BankTypeBiz implements IBankTypeBiz {
	
	/**
	 * 注入银行产品信息表Service
	 */
	@Resource
	private BankTypeService bankTypeService;
	@Resource
	private BankService bankService;
	
	/**
	 * @Description: 新增银行产品信息表
	 * @param bankType
	 * @return 受影响行数
	 * @author zhaofan
	 * @date 2018年05月08日 上午01:20:27
	 */
	public int addBankType(BankType bankType) {
		return bankTypeService.addBankType(bankType);
	}
	
	/**
	 * @Description: 修改银行产品信息表
	 * @param bankType 银行产品信息表
	 * @return 受影响行数
	 * @author zhaofan
	 * @date 2018年05月08日 上午01:20:27
	 */
	public int updateBankType(BankType bankType) {
		return bankTypeService.updateById(bankType);
	}
	
	/**
	 * @Description: 删除银行产品信息表
	 * @param id 主键
	 * @return 受影响行数
	 * @author zhaofan
	 * @date 2018年05月08日 上午01:20:27
	 */
	public int deleteBankType(Long id) {
		return bankTypeService.deleteById(id);
	}
	
	/**
	 * @Description: 根据ID查询银行产品信息表
	 * @param id 主键
	 * @return 银行产品信息表
	 * @author zhaofan
	 * @date 2018年05月08日 上午01:20:27
	 */
	public BankType findById(Long id) {
		return bankTypeService.findById(id);
	}
	/**
	 * 查询银行产品信息总记录数
	 * @param bankTypeVo
	 * @return
	 */
	public Long findBankTypeCount(BankTypeVo bankTypeVo){
		return bankTypeService.findBankTypeCount(bankTypeVo);
	}
	/**
	 * 查询银行产品信息列表
	 * @param bankTypeVo
	 * @return
	 */
	public List<BankTypeVo> findBankType(BankTypeVo bankTypeVo){
		List<BankTypeVo> list = bankTypeService.findBankType(bankTypeVo);
		for (BankTypeVo bankTypeVo2 : list) {
			//编码转换
			codeTransform(bankTypeVo2);
		}
		return list;
	}
	/**
	 * 编码转换
	 * @param bankTypeVo
	 */
	private void codeTransform(BankTypeVo bankTypeVo){
		//银行编码转换
		if(!StringUtils.isEmpty(bankTypeVo.getBankCode())){
			Bank bank = bankService.findByBankCode(bankTypeVo.getBankCode());
			if(null != bank){
				bankTypeVo.setBankName(bank.getBankName());
			}
		}
	}
	/**
	 * 查询银行产品
	 * @param bankTypeVo
	 * @return
	 */
	public BankType findByBankType(BankTypeVo bankTypeVo){
		return bankTypeService.findByBankType(bankTypeVo);
	}
	
	/**
	 * 根据银行编码查询兑换金额最小的银行产品
	 * @param bankTypeVo
	 * @return
	 */
	public BankType findBankTypeByBankCode(BankTypeVo bankTypeVo){
		return bankTypeService.findBankTypeByBankCode(bankTypeVo);
	}
}